package com.zlp.mall.modules.pms.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zlp.mall.common.api.Pager;
import com.zlp.mall.modules.pms.dto.req.ProductCategoryAddReq;
import com.zlp.mall.modules.pms.dto.req.ProductCategoryUpdReq;
import com.zlp.mall.modules.pms.dto.resp.ProductAttributeCategoryResp;
import com.zlp.mall.modules.pms.dto.resp.ProductCateChildrenResp;
import com.zlp.mall.modules.pms.dto.resp.ProductCategoryResp;
import com.zlp.mall.modules.pms.model.ProductCategory;

import java.util.List;

/**
 * <p>
 * 产品分类 服务类
 * </p>
 *
 * @author ZouLiPing
 * @since 2021-09-23
 */
public interface ProductCategoryService extends IService<ProductCategory> {

    /**
     * 根据分页获取商品列表
     * @param parentId
     * @param keyword
     * @param pageSize
     * @param pageNum
     * @date: 2021/9/26 16:41
     * @return: java.lang.Object
     */
    Pager<ProductCategoryResp> list(Long parentId, String keyword, Integer pageSize, Integer pageNum);

    /**
     * 获取商品一级分类和二级分类的下拉级联数据
     * @param
     * @date: 2021/9/26 17:14
     * @return: java.util.List<com.zlp.mall.modules.pms.dto.resp.ProductCateChildrenResp>
     */
    List<ProductCateChildrenResp> getWithChildren();

    /** 
     * 修改导航栏显示状态
     * @param ids
     * @param navStatus
     * @date: 2021/9/27 11:53
     * @return: boolean 
     */
    boolean updateNavStatus(List<Long> ids, Integer navStatus);

    /**
     * 商品分类删除
     * @param id
     * @date: 2021/9/27 13:23
     * @return: boolean
     */
    boolean delete(Long id);


    /**
     * 商品分类修改
     * @param productCategoryUpdReq
     * @date: 2021/9/27 13:28
     * @return: boolean
     */
    boolean update(ProductCategoryUpdReq productCategoryUpdReq);


    /**
     * 根据ID获取商品分类信息
     * @param id
     * @date: 2021/9/27 13:32
     * @return: com.zlp.mall.modules.pms.dto.resp.ProductCategoryResp
     */
    ProductCategoryResp getInfoById(Long id);


    /**
     * 添加商品分类
     * @param productCategoryAddReq
     * @date: 2021/9/27 13:38
     * @return: boolean
     */
    boolean create(ProductCategoryAddReq productCategoryAddReq);


    /** 
     * 是否显示
     * @param ids
     * @param showStatus
     * @date: 2021/9/27 14:26
     * @return: boolean 
     */
    boolean updateShowStatus(List<Long> ids, Integer showStatus);

    /** 
     * 获取子分类商品
     * @param parentId
     * @date: 2021/9/30 11:24
     * @return: java.util.List<com.zlp.mall.modules.pms.model.ProductCategory> 
     */
    List<ProductCategory> getChildProductCategory(Long parentId);


}
